# -*- coding: utf-8 -*-
# @Time    : 2023/7/12 0012 10:15
# @Author  : zcj
# @File    : BusinessFlow_convert.py
# @Software : PyCharm
import os
import time
from common import read_config
from common.read_excel_handle import read_execl
from common.read_yaml import get_yaml_data
from common.single_convert import single_data_convert
from common.util import filename_all, business_path


# def allcase_busin():
#     cases = []
#     num = filename_all(business_path)  # 获取Api/data/BusinessFlow目录下所有文件名称
#     if num: #如果不为空，则执行下面语句
#         cof = read_config.Docof()
#         Excel_yaml = cof.get_value_from_option("Excel_yaml", "case")  # 根据配置文件来整合 execl或者yaml 用例
#         if Excel_yaml == "1":  # 获取Api/data/BusinessFlow目录下的execl表格用例
#             for filename in num:
#                 if filename.endswith('.xlsx'):  # 判断文件的后缀名是否是yaml文件
#                     ta = read_execl(business_path + f'/{filename}')  # 读取节点下全部数据
#
#                     cases.extend(ta)  # 把每个文件的数据添加到一个列表
#
#             return cases
#         elif Excel_yaml == "2":  # 获取Api/data/BusinessFlow目录下的yaml用例
#
#             for filename in num:
#                 if filename.endswith('.yaml'):  # 判断文件的后缀名是否是yaml文件
#                     ta = get_yaml_data(business_path + f'/{filename}')["business process"]  # 读取节点下全部数据
#
#                     cases.extend(ta)  # 把每个文件的数据添加到一个列表
#
#             return cases
#     else:
#
#         print("业务流程接口目录下，不存在用例文件")


def read_files(file_list, file_extension, read_function):
    """
    通用文件读取函数
    :param file_list: 文件名列表
    :param file_extension: 文件扩展名
    :param read_function: 读取文件的函数
    :return: 读取的数据列表
    """
    cases = []
    for filename in file_list:
        if filename.endswith(file_extension):
            file_path = os.path.join(business_path, filename)
            try:
                data = read_function(file_path)
                cases.extend(data)
            except Exception as e:
                print(f"Error  reading {filename}: {e}")
    return cases

def allcase_busin():
    """
    获取所有业务流程用例
    :return: 用例数据列表
    """
    cases = []
    file_list = filename_all(business_path)  # 获取Api/data/BusinessFlow目录下所有文件名称
    if not file_list:
        print("业务流程接口目录下，不存在用例文件")
        return cases  #为空则函数直接结束

    config = read_config.Docof()
    excel_yaml = config.get_value_from_option("Excel_yaml", "case")  # 根据配置文件来整合 execl或者yaml 用例

    if excel_yaml == "1":  # 处理Excel文件
        cases = read_files(file_list, '.xlsx', lambda path: read_execl(path))
    elif excel_yaml == "2":  # 处理YAML文件
        cases = read_files(file_list, '.yaml', lambda path: get_yaml_data(path)["business process"])
    else:
        print("配置文件中的Excel_yaml选项值不正确")

    return cases


if __name__ == '__main__':
    cases = allcase_busin()  # 判断该目录下存在文件
    if cases:
        print("用例读取成功")
    else:
        print("未找到任何用例")
